Modern computers often include a computer interface board (e.g., a motherboard, logic board, system board, etc.) to interface different components (e.g., central processing units, chipsets, memory, storage, video cards, sound cards, network cards, etc.) of the computer together. A computer interface board also includes various connectors, brackets, and cables for connecting the components to the computer interface board. For example, a computer interface board often includes dual in-line memory module (DIMM) sockets (e.g., DDR3 sockets, DDR4 sockets, etc.), serial advanced technology attachment (SATA) connectors and cables, peripheral component interconnect express (PCIe) connectors and brackets, and various other interfaces.
Some of the various interfaces of a computer interface board are conventionally designed to interface with specific kinds of components. For example, DIMM sockets conventionally interface with memory devices (e.g., random access memory), SATA connectors and cables generally interface with storage devices (e.g., hard disk drives, solid state drives, optical drives, etc.), and PCIe connectors generally interface with graphics cards, storage devices, and various add-on peripherals.
A recent product, the ULLtraDIMM® solid state drive (SSD) (hereinafter “the ULLtraDIMM”), is a flash SSD that interfaces with the CPU through a DIMM socket. The ULLtraDIMM takes advantage of the DIMM form factor, which does not require extra cabling or brackets, unlike SATA and PCIe SSDs. Also, as DIMM sockets are typically located near the CPU and have direct access to the CPU, the ULLtraDIMM may enable low latency storage access.
As the ULLtraDIMM interfaces with the CPU through a DIMM socket, the ULLtraDIMM is coupled to the CPU's memory bus, which is specifically designed to interface with random access memory devices, not with flash storage. In order to enable communication between the ULLtraDIMM and the CPU over the memory bus, the ULLtraDIMM includes a controller that can communicate with the CPU over the memory bus, and can communicate with SSD controllers within the ULLtraDIMM using a SATA protocol.
Although the ULLtraDIMM internally utilizes a SATA protocol, the internal SATA interface is isolated from the computer interface board. As a result, some standard features of the SATA protocol may be unavailable to the ULLtraDIMM. For example, the ULLtraDIMM may not be able to transfer stored data into system memory where it can be operated on by the CPU (i.e., direct memory access (DMA), which is standard to SATA, PCIe, and SAS protocols). Instead, the CPU transfers the data from the ULLtraDIMM SSD to the system memory through programmed input/output (PIO), and system efficiency is compromised thereby. As another example, the ULLtraDIMM may not be able to send interrupt messages to the CPU (the memory bus has no interrupt capability) so the CPU may not be able to be directly summoned to attend to the SSD. As a result, the CPU may not be able to work on other tasks (threads) while waiting for a drive to retrieve and correct its data, and system efficiency is further compromised.
Furthermore, in order to make the ULLtraDIMM visible to the CPU after a system boot, the computer system's initializing software (e.g., basic input/output system (BIOS) software) would probably need to be modified. Also, after booting, special non-standard drivers may need to be loaded to enable the CPU to access the ULLtraDIMM as an SSD over the memory bus.